1. Field
The present invention relates to the field of cryptography. More particularly, the present invention relates to a circuit and method for providing secure communications between devices.
2. General Background
It is well known that computers can be used to process and store sensitive information in a digital form. For example, computers may be used to conduct financial transactions such as adjusting credit card or bank account balances, metering electronic content usage, and the like. Due to the sensitive nature of this information, it has become necessary to ensure that its integrity is protected during transmission between devices in different computers as well as between devices within the same computer.
A number of cryptographic techniques are available to establish secure communications between two devices. Herein, communications are deemed “secure” when information sent over a normally unprotected communication medium is protected against observation, tampering, and replay of previously-recorded valid information. Some of these available cryptographic techniques involve a block cipher function and/or a stream cipher function.
Referring to FIG. 1, an illustrative embodiment of the general functionality of a conventional block cipher function is shown. In particular, a group of data bits (referred to as “incoming data”) 110 is loaded into a cipher engine 100. Normally, (block) cipher engine 100 is software that produces an encrypted output “E(data)” 120 by successively encrypting groups of bits at a time in accordance with a predetermined symmetric key encryption function. One example of a symmetric key encryption function includes Data Encryption Standard (DES) as set forth in Federal Information Processing Standards Publication 46-2 published on or around Dec. 30, 1993. A significant disadvantage associated with many block cipher functions is that they cannot support secure communications at a high transmission rate. Rather, significant latency is realized between the receipt of incoming data 110 and the production of encrypted output 120.
As shown in FIG. 2, an illustrative embodiment of the general functionality of a conventional stream cipher function is shown. In particular, a set of bits (referred to as “configuration data”) 210 is loaded into a cipher engine acting as a pseudo-random stream generator 200. When configuration data 210 is keying material, a pseudo-random stream generator 200 produces a pseudo-random stream 220 that can operate effectively as a One-Time Pad (OTP). Namely, pseudo-random stream 220 may be used to encrypt (or decrypt) data 230 by exclusively OR'ing (XOR'ing) data 230 with pseudo-random stream 220. This operation produces an encrypted (or decrypted) data stream 240 and causes minimal latency because pseudo-random stream 220 may be pre-computed. While this approach protects against eavesdropping and replay attacks on the communication stream, it is extremely susceptible to tampering or inadvertent corruption because a targeted bit of data 230 may be altered in a coherent and intended manner by modifying a selected bit of encrypted data stream 240.
In an effort to overcome this tampering susceptibility, an integrity checksum 250 may be generated concurrently with encrypted data stream 240. Integrity checksum 250 accompanies encrypted data stream 240 and is used to determine whether data stream 240 has been modified during transmission. One type of integrity checksum is in accordance with DES Message Authentication Code (MAC), which is calculated using a block ciphering function. However, the use of a DES MAC integrity checksum in combination with stream ciphering would reintroduce the latency disadvantages realized by block ciphers.
Hence, it is desirable to develop an efficient and cost effective technique by which various devices may securely communicate with each other with minimal latency. Similarly, an integrity mechanism for such communication may alternatively be used in the absence of encryption to provide for a high-integrity, low-latency communication channel.